أتقن Pipenv لإدارة تبعيات مشاريع Python وقم بتبسيط سير عمل التطوير الخاص بك باستخدام البيئات الافتراضية. تعلم أفضل الممارسات والتقنيات المتقدمة.
بيئة Pipenv الافتراضية: دليل لتدفق عمل تطوير مُحسَّن
في عالم تطوير Python، تعد إدارة تبعيات المشروع بكفاءة أمرًا بالغ الأهمية للحفاظ على الاتساق، وقابلية الاستنساخ، ومنع التعارضات. برز Pipenv كأداة قوية وسهلة الاستخدام تبسط هذه العملية من خلال دمج إدارة الحزم (مثل pip
) مع إدارة البيئات الافتراضية (مثل virtualenv
). سيرشدك هذا الدليل الشامل خلال كل ما تحتاج لمعرفته حول Pipenv، بدءًا من الإعداد الأساسي وحتى الاستخدام المتقدم، لتحسين سير عمل التطوير الخاص بك وضمان أن تكون مشاريعك منظمة وقابلة للنقل بشكل جيد.
لماذا تستخدم Pipenv؟
قبل الخوض في التفاصيل، دعنا نفهم لماذا يعد Pipenv خيارًا متفوقًا لإدارة مشاريع Python الخاصة بك. غالبًا ما تتضمن الطرق التقليدية استخدام pip
و virtualenv
بشكل منفصل، مما قد يؤدي إلى عدم الاتساق وزيادة عبء الإدارة. يعالج Pipenv هذه المشكلات من خلال:
- دمج إدارة الحزم والبيئات الافتراضية: يدمج Pipenv سلسًا كلا الوظيفتين، مما يجعل إدارة التبعيات سهلة للغاية.
- عمليات بناء حتمية: يستخدم Pipenv ملفي
Pipfile
وPipfile.lock
لضمان عمليات بناء قابلة للتكرار عبر بيئات مختلفة. يسردPipfile
التبعيات المباشرة لمشروعك، بينما يسجلPipfile.lock
الإصدارات الدقيقة لجميع التبعيات (بما في ذلك التبعيات الانتقالية)، مما يضمن أن كل من يعمل على المشروع يستخدم نفس الحزم. - سير عمل مبسط: يوفر Pipenv واجهة سطر أوامر نظيفة وبديهية، مما يجعل المهام الشائعة مثل تثبيت وإلغاء تثبيت وإدارة التبعيات مباشرة.
- أمان محسّن: يضمن ملف
Pipfile.lock
أنك تستخدم نفس إصدارات الحزم كما عند إعداد المشروع في البداية، مما يقلل من خطر الثغرات الأمنية المرتبطة بالإصدارات الأحدث وغير المختبرة. - دعم
pyproject.toml
: يتبنى Pipenv معيارpyproject.toml
الحديث لتكوين المشروع، مما يجعله متوافقًا مع أدوات البناء وسير العمل الأخرى.
التثبيت والإعداد
قبل أن تتمكن من البدء في استخدام Pipenv، تحتاج إلى تثبيته. إليك كيفية تثبيت Pipenv باستخدام pip
:
pip install pipenv
يوصى بشكل عام بتثبيت Pipenv في بيئة معزولة لتجنب التعارضات مع حزم Python الأخرى. يمكنك استخدام pipx
لهذا الغرض:
pip install pipx
pipx ensurepath
pipx install pipenv
بعد التثبيت، تحقق من تثبيت Pipenv بشكل صحيح عن طريق التحقق من إصداره:
pipenv --version
يجب أن يعرض هذا الأمر إصدار Pipenv المثبت.
الاستخدام الأساسي: إنشاء وإدارة البيئات الافتراضية
إنشاء مشروع جديد
لإنشاء مشروع جديد باستخدام Pipenv، انتقل إلى دليل مشروعك في الطرفية وقم بتشغيل:
pipenv install
ينشئ هذا الأمر بيئة افتراضية جديدة لمشروعك وينشئ ملفي Pipfile
و Pipfile.lock
إذا لم يكونا موجودين بالفعل. عادةً ما يتم تخزين البيئة الافتراضية في دليل مخفي .venv
داخل مشروعك أو في موقع مركزي يديره Pipenv.
تنشيط البيئة الافتراضية
لتنشيط البيئة الافتراضية، استخدم الأمر التالي:
pipenv shell
يفتح هذا الأمر طرفية جديدة مع تنشيط البيئة الافتراضية. سترى عادةً اسم البيئة الافتراضية بين قوسين قبل موجه الأوامر، مما يشير إلى أن البيئة نشطة.
تثبيت الحزم
لتثبيت الحزم في بيئتك الافتراضية، استخدم الأمر pipenv install
متبوعًا بأسماء الحزم:
pipenv install requests
pipenv install flask
تقوم هذه الأوامر بتثبيت حزم requests
و flask
وإضافتها إلى ملف Pipfile
الخاص بك. يقوم Pipenv تلقائيًا بتحديث Pipfile.lock
لتسجيل الإصدارات الدقيقة للحزم المثبتة وتبعياتها.
يمكنك أيضًا تحديد قيود الإصدار عند تثبيت الحزم:
pipenv install requests==2.26.0
يقوم هذا الأمر بتثبيت الإصدار 2.26.0 من حزمة requests
.
تثبيت تبعيات التطوير
غالبًا ما تكون لديك حزم مطلوبة فقط أثناء التطوير، مثل أطر الاختبار أو المدققات. يمكنك تثبيت هذه كتبعيات تطوير باستخدام العلامة --dev
:
pipenv install pytest --dev
pipenv install flake8 --dev
تتم إضافة هذه الحزم إلى Pipfile
ضمن قسم [dev-packages]
.
إلغاء تثبيت الحزم
لإلغاء تثبيت حزمة، استخدم الأمر pipenv uninstall
:
pipenv uninstall requests
يزيل هذا الأمر حزمة requests
من البيئة الافتراضية ويقوم بتحديث ملفي Pipfile
و Pipfile.lock
.
قائمة الحزم المثبتة
لرؤية قائمة بالحزم المثبتة في بيئتك الافتراضية، استخدم الأمر pipenv graph
:
pipenv graph
يعرض هذا الأمر رسمًا بيانيًا للتبعية يوضح الحزم المثبتة وتبعياتها.
تشغيل الأوامر في البيئة الافتراضية
يمكنك تشغيل الأوامر داخل البيئة الافتراضية دون تنشيطها باستخدام pipenv run
:
pipenv run python your_script.py
يقوم هذا الأمر بتنفيذ البرنامج النصي your_script.py
باستخدام مترجم Python الموجود داخل البيئة الافتراضية.
الاستخدام المتقدم وأفضل الممارسات
العمل مع Pipfile
و Pipfile.lock
يعد ملفا Pipfile
و Pipfile.lock
الملفين الأساسيين لإدارة التبعيات في Pipenv. يسرد Pipfile
التبعيات المباشرة لمشروعك، بينما يسجل Pipfile.lock
الإصدارات الدقيقة لجميع التبعيات (بما في ذلك التبعيات الانتقالية). من الضروري فهم كيفية عمل هذه الملفات وكيفية إدارتها بفعالية.
هيكل Pipfile
:
Pipfile
هو ملف TOML يحتوي على معلومات حول تبعيات مشروعك، وإصدار Python، وإعدادات أخرى. إليك مثال أساسي:
[requires]
python_version = "3.9"
[packages]
requests = "*"
flask = "*"
[dev-packages]
pytest = "*"
[source]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[requires]
: يحدد إصدار Python المطلوب للمشروع.[packages]
: يسرد التبعيات المباشرة للمشروع. تشير"*"
إلى أن أي إصدار مقبول، ولكن يوصى بتحديد قيود الإصدار.[dev-packages]
: يسرد تبعيات التطوير.[source]
: يحدد فهرس الحزمة المراد استخدامه.
هيكل Pipfile.lock
:
Pipfile.lock
هو ملف JSON يحتوي على الإصدارات الدقيقة لجميع الحزم وتبعياتها. يتم إنشاء هذا الملف وتحديثه تلقائيًا بواسطة Pipenv. لا يجب عليك تحرير هذا الملف يدويًا أبدًا.
تحديث التبعيات:
لتحديث تبعياتك، استخدم الأمر pipenv update
. يقوم هذا الأمر بتحديث جميع الحزم إلى أحدث الإصدارات التي تفي بقيود الإصدار في ملف Pipfile
الخاص بك ويقوم بتحديث Pipfile.lock
وفقًا لذلك:
pipenv update
لتحديث حزمة معينة، استخدم الأمر pipenv update
متبوعًا باسم الحزمة:
pipenv update requests
استخدام إصدارات Python مختلفة
يسمح لك Pipenv بتحديد إصدار Python لمشروعك. يمكنك القيام بذلك عند إنشاء البيئة الافتراضية:
pipenv --python 3.9
ينشئ هذا الأمر بيئة افتراضية باستخدام Python 3.9. يكتشف Pipenv تلقائيًا إصدارات Python المتاحة على نظامك. يمكنك أيضًا تحديد إصدار Python في Pipfile
:
[requires]
python_version = "3.9"
العمل مع بيئات متعددة
في العديد من المشاريع، سيكون لديك بيئات مختلفة، مثل التطوير والاختبار والإنتاج. يمكنك إدارة هذه البيئات باستخدام متغيرات البيئة.
على سبيل المثال، يمكنك تعيين متغير البيئة PIPENV_DEV
إلى 1
لتثبيت تبعيات التطوير:
PIPENV_DEV=1 pipenv install
يمكنك أيضًا استخدام ملفات Pipfile
مختلفة لبيئات مختلفة. على سبيل المثال، يمكنك الحصول على Pipfile.dev
لتبعيات التطوير و Pipfile.prod
لتبعيات الإنتاج. يمكنك بعد ذلك استخدام متغير البيئة PIPENV_PIPFILE
لتحديد ملف Pipfile
المراد استخدامه:
PIPENV_PIPFILE=Pipfile.dev pipenv install
التكامل مع بيئات التطوير المتكاملة (IDEs) والمحررات
تتمتع معظم بيئات التطوير المتكاملة والمحررات الشهيرة، مثل VS Code و PyCharm و Sublime Text، بدعم مدمج لـ Pipenv. هذا التكامل يجعل من السهل إدارة البيئات الافتراضية والتبعيات الخاصة بك مباشرة من بيئة التطوير المتكاملة الخاصة بك.
VS Code:
يكتشف VS Code تلقائيًا بيئات Pipenv الافتراضية. يمكنك تحديد البيئة الافتراضية المراد استخدامها من الزاوية السفلية اليمنى لنافذة VS Code. يمكنك أيضًا تكوين VS Code لاستخدام Pipenv عن طريق تعيين الإعداد python.pythonPath
في ملف settings.json
الخاص بك:
"python.pythonPath": "${workspaceFolder}/.venv/bin/python"
PyCharm:
يكتشف PyCharm أيضًا تلقائيًا بيئات Pipenv الافتراضية. يمكنك تحديد البيئة الافتراضية المراد استخدامها من إعدادات مفسر المشروع. يوفر PyCharm أيضًا ميزات لإدارة تبعيات Pipenv وتشغيل الأوامر داخل البيئة الافتراضية.
اعتبارات الأمان
عند استخدام Pipenv، من المهم أن تكون على دراية باعتبارات الأمان:
- التحقق من تجزئات الحزم: يتحقق Pipenv تلقائيًا من تجزئات الحزم التي تم تنزيلها للتأكد من عدم العبث بها.
- الحفاظ على تحديث التبعيات: قم بتحديث تبعياتك بانتظام إلى أحدث الإصدارات لتصحيح الثغرات الأمنية.
- استخدام بيئة افتراضية: استخدم دائمًا بيئة افتراضية لعزل تبعيات مشروعك ومنع التعارضات مع المشاريع الأخرى.
- مراجعة
Pipfile.lock
: راجع ملفPipfile.lock
بشكل دوري للتأكد من أن الحزم وتبعياتها هي ما تتوقعه.
مشكلات شائعة واستكشاف الأخطاء وإصلاحها
تعارضات Pipfile.lock
يمكن أن تحدث تعارضات Pipfile.lock
عندما يعمل العديد من المطورين على نفس المشروع ولديهم إصدارات مختلفة من التبعيات. لحل هذه التعارضات، اتبع هذه الخطوات:
- تأكد من أن الجميع يستخدمون نفس إصدار Python.
- قم بتحديث تبعياتك المحلية باستخدام
pipenv update
. - قم بتثبيت
Pipfile.lock
المحدث في المستودع. - اجعل المطورين الآخرين يسحبون أحدث التغييرات ويقومون بتشغيل
pipenv install
لمزامنة بيئاتهم.
فشل تثبيت الحزم
يمكن أن تحدث حالات فشل تثبيت الحزم لأسباب مختلفة، مثل مشكلات الشبكة، أو التبعيات غير المتوافقة، أو مكتبات النظام المفقودة. لاستكشاف هذه المشكلات وإصلاحها:
- تحقق من اتصالك بالإنترنت.
- تأكد من تثبيت مكتبات النظام اللازمة.
- حاول تثبيت الحزمة باستخدام قيد إصدار محدد.
- استشر وثائق الحزمة أو منتديات المجتمع للحصول على المساعدة.
مشكلات تنشيط البيئة الافتراضية
إذا كنت تواجه مشكلات في تنشيط البيئة الافتراضية، فحاول هذه الخطوات:
- تأكد من أنك في دليل المشروع.
- حاول تشغيل
pipenv shell
مرة أخرى. - إذا كنت تستخدم طرفية مخصصة، فتأكد من تكوينها لتنشيط البيئات الافتراضية.
أمثلة واقعية وحالات استخدام
تطوير الويب باستخدام Flask أو Django
يعد Pipenv مفيدًا بشكل خاص لمشاريع تطوير الويب التي تستخدم أطر عمل مثل Flask أو Django. إنه يبسط عملية إدارة التبعيات مثل إطار عمل الويب نفسه، وموصلات قاعدة البيانات، والمكتبات الأساسية الأخرى. على سبيل المثال، قد يحتوي مشروع Django على تبعيات مثل django
و psycopg2
(لـ PostgreSQL) و djangorestframework
. يضمن Pipenv أن جميع المطورين يستخدمون نفس إصدارات هذه الحزم، مما يمنع مشكلات التوافق.
مشاريع علوم البيانات
تعتمد مشاريع علوم البيانات غالبًا على العديد من المكتبات مثل numpy
و pandas
و scikit-learn
و matplotlib
. يساعد Pipenv في إدارة هذه التبعيات، مما يضمن أن بيئة علوم البيانات متسقة عبر أجهزة ونشر مختلفة. باستخدام Pipenv، يمكن لعلماء البيانات مشاركة مشاريعهم بسهولة مع الزملاء أو نشرها في بيئة الإنتاج دون القلق بشأن تعارضات التبعيات.
نصوص الأتمتة وأدوات سطر الأوامر
حتى بالنسبة للنصوص الأتمتة الأصغر أو أدوات سطر الأوامر، يوفر Pipenv فوائد كبيرة. يسمح لك بعزل التبعيات المطلوبة للنص، ومنعها من التدخل في تثبيتات Python الأخرى على نظامك. هذا مفيد بشكل خاص إذا كان لديك نصوص متعددة تتطلب إصدارات مختلفة من نفس الحزمة.
مثال: أداة بسيطة لكشط الويب
تخيل أنك تريد إنشاء نص يقوم بكشط البيانات من موقع ويب. ستحتاج على الأرجح إلى مكتبة requests
لجلب محتوى HTML و beautifulsoup4
لتحليله. باستخدام Pipenv، يمكنك بسهولة إدارة هذه التبعيات:
pipenv install requests beautifulsoup4
هذا يضمن أن النص يستخدم دائمًا الإصدارات الصحيحة لهذه المكتبات، بغض النظر عن النظام الذي يتم تشغيله عليه.
بدائل لـ Pipenv
بينما Pipenv أداة رائعة، هناك خيارات أخرى لإدارة تبعيات Python والبيئات الافتراضية:
venv
(مدمج): توفر وحدةvenv
في المكتبة القياسية وظائف البيئة الافتراضية الأساسية. لا تتضمن ميزات إدارة الحزم، لذلك لا يزال يتعين عليك استخدامpip
بشكل منفصل.virtualenv
: مكتبة شائعة من طرف ثالث لإنشاء البيئات الافتراضية. مثلvenv
، تتطلبpip
لإدارة الحزم.poetry
: أداة أخرى حديثة لإدارة التبعيات تجمع بين إدارة الحزم وإدارة البيئات الافتراضية، على غرار Pipenv. تستخدم Poetry أيضًا ملفpyproject.toml
لتكوين المشروع.conda
: نظام لإدارة الحزم والتبعيات والبيئات لأي لغة - Python و R و JavaScript و C و C ++ و Java والمزيد. Conda مفتوح المصدر ويتم صيانته بواسطة Anaconda, Inc.
لكل من هذه الأدوات نقاط قوتها وضعفها. يعتبر Pipenv خيارًا جيدًا للمشاريع التي تتطلب سير عمل بسيطًا وبديهيًا، بينما قد يفضل Poetry للمشاريع التي تحتاج إلى ميزات أكثر تقدمًا أو تكامل مع أدوات بناء أخرى. يتفوق conda
عند إدارة البيئات لمشاريع متعددة اللغات. venv
و virtualenv
مفيدان للعزل الأساسي للبيئة ولكنهما يفتقران إلى ميزات إدارة التبعيات لـ Pipenv و Poetry.
خاتمة
Pipenv أداة قيمة لتحسين سير عمل تطوير Python الخاص بك عن طريق تبسيط إدارة التبعيات وضمان عمليات بناء قابلة للتكرار. من خلال فهم مفاهيمه الأساسية وأفضل الممارسات، يمكنك إنشاء مشاريع Python منظمة وقابلة للنقل وآمنة. سواء كنت تعمل على نص صغير أو تطبيق واسع النطاق، يمكن لـ Pipenv مساعدتك في إدارة تبعياتك بشكل أكثر كفاءة والتركيز على كتابة الكود.
بدءًا من الإعداد الأولي وحتى التكوينات المتقدمة، سيؤدي إتقان Pipenv إلى تحسين إنتاجيتك وضمان بيئات متسقة عبر منصات وأعضاء فريق مختلفين. احتضن Pipenv وارتقِ بتجربة تطوير Python الخاصة بك.